package com.ztools.pc.service.sys;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ztools.common.model.pc.login.LoginToken;
import com.ztools.common.model.pc.sys.User;
import com.ztools.common.util.common.PageUtil;

import java.util.List;

/**
 * @Author:一口香菜
 * @Date: 2023/3/2  20:34
 * @Version 1.0
 */
public interface UserService extends IService<User> {

    /**
     * 分页查询
     *
     * @param pageUtil 分页数据
     * @return 对象
     */
    Page<User> findList(PageUtil<User> pageUtil);

    /**
     * 删除
     *
     * @param user 对象
     * @return boolean
     */
    boolean delete(User user);

    /**
     * 添加
     *
     * @param user 对象
     * @return
     */
    boolean add(User user);

    /**
     * 修改
     *
     * @param user 对象
     * @return boolean
     */
    boolean update(User user);

    /**
     * 修改密码
     *
     * @param user
     * @return
     */
    boolean updatePwd(User user);

    /**
     * 根据条件查询
     *
     * @param user 对象
     * @return User
     */
    List<User> findByObject(User user);

    /**
     * 登入方法
     *
     * @param user 用户
     * @return
     */
    LoginToken login(User user);

    /**
     * 退出登入
     *
     * @param token
     */
    void logout(String token);

    /**
     * 根据token查询用户信息（包含用户角色权限）
     *
     * @param token
     * @return
     */
    User findByToken(String token);

    /**
     * 根据token获取用户信息
     *
     * @param token token
     * @return
     */
    User findUserByToken(String token);

    /**
     * 重置密码
     *
     * @param user
     * @return
     */
    boolean restPassword(User user);
}
